package com.cbwl.eoas.cms.service.impl.sysconfig;



import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import com.cbwl.eoas.cms.api.sysconfig.ISysResourceService;
import com.cbwl.eoas.cms.dao.sysconfig.ISysResourceDao;
import com.cbwl.eoas.cms.model.sysconfig.SysResourceDTO;
import com.cbwl.eoas.common.base.BaseServiceImpl;


/**
 * 
 * <p>[描述信息：SysResourceDAO接口]</p>
 *
 * @author 虞云波 - yuyunbo@3856.cc
 * @version 1.0 Created on 2017年10月12日 下午13:29:23
 */
@Service
public class SysResourceServiceImpl  extends BaseServiceImpl<SysResourceDTO>  implements ISysResourceService  {
	
	@Autowired
	private ISysResourceDao isysResourceDao;

	@Override
	public Object queryObjectListForRole(SysResourceDTO bean) {
		return isysResourceDao.queryObjectListForRole(bean);
	}

	
	/**
	 * 
	 * <p>根据用户id，获取对应的资源信息</p>
	 * 
	 * @see com.cbwl.eoas.cms.api.sysconfig.ISysResourceService#queryObjectListByUid(com.cbwl.eoas.cms.model.sysconfig.SysResourceDTO)
	 * @author: 虞云波 - yuyunbo@3856.cc 
	 * @date: Created on 2017年10月31日 下午5:00:00
	 */
	@Override
	public Object queryObjectListByUid(SysResourceDTO bean) {
		return isysResourceDao.queryObjectListByUid(bean);
	}


	/**
	 * 
	 * <p>根据用户id，查询菜单信息</p>
	 * 
	 * @see com.cbwl.eoas.cms.api.sysconfig.ISysResourceService#queryMenupatterns(com.cbwl.eoas.cms.model.sysconfig.SysResourceDTO)
	 * @author: 虞云波 - yuyunbo@3856.cc 
	 * @date: Created on 2017年11月29日 上午10:21:55
	 */
	@Override
	public List<SysResourceDTO> queryMenupatterns(SysResourceDTO bean) {
		
		//所有的菜单信息
		List<SysResourceDTO> list = isysResourceDao.queryObjectListByUidForCMS(bean);
		
		Map<Long,List<SysResourceDTO>> map =  new HashMap<Long, List<SysResourceDTO>>();
		
		//梳理菜单，菜单归类
		for(SysResourceDTO resource : list){
				List<SysResourceDTO> sonList = map.get(resource.getPid());
				if(StringUtils.isEmpty(sonList)){
					sonList =  new ArrayList<>();
				}
				sonList.add(resource);
				map.put(resource.getPid(), sonList);
		}
		
		//再循环，封装成父子菜单格式
		List<SysResourceDTO> returnList = new ArrayList<>();
		for(SysResourceDTO resource : list){
			if(!StringUtils.isEmpty(map.get(resource.getId()))){
				resource.setSonList(map.get(resource.getId()));
				returnList.add(resource);
			}
		}
		return returnList;
	}


	/**
	 * 
	 * <p>查询菜单，为用户权限做拦截器</p>
	 * 
	 * @see com.cbwl.eoas.cms.api.sysconfig.ISysResourceService#queryMenuForAuth(com.cbwl.eoas.cms.model.sysconfig.SysResourceDTO)
	 * @author: 虞云波 - yuyunbo@3856.cc 
	 * @date: Created on 2017年11月29日 下午2:01:07
	 */
	@Override
	public Set<String> queryMenuForAuth(SysResourceDTO bean) {
		//所有的菜单信息
		List<SysResourceDTO> list = isysResourceDao.queryObjectListByUidForCMS(bean);
		Set<String> returnList = new HashSet<>();
		list.forEach(e ->{
			returnList.add(e.getResourceValue());
		});
		return returnList;
	}
	
	
	
	
	
}
